use std::collections::VecDeque;

fn main() {
    println!("Vec");
    // Vec
    // let mut v:Vec<i32>=Vec::new();
    // let mut v:Vec<i32>=Vec![];
    // let mut v= vec![1,2,3,4];
    // let mut v=vec![12,13];
    let mut v: Vec<i32> = Vec::new();
    // for x in v {
    //     println!("{}", x);
    // }
    // push -添加元素
    v.push(1);
    v.push(2);
    v.push(3);
    for i in &mut v {
        *i += 50;
        println!("{}", i);
    }
    println!("{:?}", v);
    println!("{:?}", v.get(1));
//     修改制定的值
    v[2] = 100;
    println!("{:?}", v);
    v.pop();
    v.remove(0);
    println!("{:?}", v);

    println!("---------------------------------------");
    // VecDeque
    // 1. 使用VecDeque::new();，创建空的VecDeque
    let mut v1: VecDeque<u32> = VecDeque::new();
//     2.使用VecDeque::with_capacity，创建指定容量的vecdeque
    let mut v2: VecDeque<u32> = VecDeque::with_capacity(10);
//     修改： 添加、修改、删除元素
    // 添加
    v1.push_back(1);
    v1.push_back(2);
    v1.push_back(3);
    v1.push_back(4);
    v1.push_back(5);
    println!("{:?}", v1);
    // 修改指定位置的元素
    v1[2]=10;
    v1[3]=100;
    println!("{:?}", v1);
    // 删除
    // push_back 删除并返回队尾的元素
    // push-font
    println!("push-back,front");
    v1.push_back(1);
    println!("{:?}", v1);
    v1.pop_back();

    println!("{:?}", v1);
    v1.push_front(1);
    println!("{:?}", v1);
    v1.pop_front();
    println!("{:?}", v1);
//   remove 删除并返回队列制定索引的元素
    println!("remove:");
    v1.remove(3);
    println!("{:?}", v1);
}
